/**
//文档生成日期：2005.10.07
//
//(1)概述：
//类名称： WaitFlash
//类说明：
//??	 “动画等待画面”的Canvas界面
* 
//所在子系统：RssOwlMIDlet
//
//系统总描述:
	    我们提供的RSS无线阅读器J2ME版本[开源]是一个可以下载到手机(例如Nokia7610)或者其他无线手持设备(例如PocketPC)的应用程序，用来阅读存在于Internet中广泛的RSS新闻源。

	 子系统描述：
		RSS无线阅读器的功能列表：
	RSS Feed列表
		添加Rss Feed
		编辑Rss Feed
		删除Rss Feed
	读取Rss Feed新闻
		查看新闻摘要
		重新读取Rss Feed新闻
	关于我


//(2)历史记录:
//创建人: 张文杰
//修改者: 郑昀(2005.10.07)
//联系我: Google Talk >> zhengyun@gmail.com
//Blogs:    http://blog.csdn.net/zhengyun_ustc/以及http://www.cnblogs.com/zhengyun_ustc

//(3)版权声明:
//由于我这个版本的RSS J2ME阅读器也是基于Tommi和garrey源代码基础上改编而来的，
//所以决定遵照GPL协议的大意开放源代码，您可以自由传播和修改，在遵照GPL协议的约束条件的前提下。

//(4)相关资源:
1：《[J2ME]RSSOwlMidlet(RSS无线阅读器)开源说明》
2：《[J2ME]RSSOwlMidlet(RSS无线阅读器)设计说明》
3：下载源代码：

////////////////////////////////////////////////////////////////////*/
package com.zemo.view;

import java.util.Timer;
import java.util.TimerTask;

import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;

/*
 * Title: WaitingWebService
 * Description:此类可用于长时间操作时的等待画面
 * Copyright: Copyright (c) 2005
 * Company: ultrapower
 * 
 * @author 张文杰
 * @version 1.0
 */
public class WaitFlash extends Canvas {

	private int mCount, mMaxinum;

	private int mInterval;

	private int mWidth, mHeight, mx, my, mRadius;

	private String Msg;

	protected void paint(Graphics g) {
		int theta = -(mCount * 360 / mMaxinum);

		///////////////
		// 以下setColor我们是要定义动画的背景色彩		
		//g.setColor(255, 255, 255); // 这是白色
		//g.setColor(8,65,99); // 这是深蓝色
		g.setColor(222,235,198); // 这是浅绿色
		g.fillRect(0, 0, mWidth, mHeight);
		///////////////

		///////////////
		// 以下setColor我们是要定义动画中圆形物体的边缘色彩
		//g.setColor(0x00ff0000); // 这是红色
		g.setColor(173,195,41); // 这是绿色
		///////////////		
		g.drawArc(mx, my, mRadius, mRadius, 0, 360);
		
		///////////////
		// 以下setColor我们是要定义动画中圆形物体的填充色彩
		//g.setColor(255,154,49);// 橙色
		g.setColor(115,166,49);// 深绿色
		///////////////
		g.fillArc(mx, my, mRadius, mRadius, theta + 90, 90);
		g.fillArc(mx, my, mRadius, mRadius, theta + 270, 90);

		if (Msg != null) {
			g.drawString(Msg, mWidth / 2, my+mRadius+20, Graphics.BOTTOM
					| Graphics.HCENTER);
		}
	}

	public WaitFlash() {
		mCount = 0;
		mMaxinum = 36;
		mInterval = 50;
		mWidth = getWidth();
		mHeight = getHeight();

		int halfWidth = (mWidth - mRadius) / 2;
		int halfHeight = (mHeight - mRadius) / 2;
		mRadius = Math.min(halfWidth, halfWidth)-10;

		mx = halfWidth - mRadius / 2;
		my = halfHeight - mRadius / 2;

		TimerTask task = new TimerTask() {
			public void run() {
				mCount = (mCount + 1) % mMaxinum;
				repaint();
			}
		};

		Timer timer = new Timer();
		timer.schedule(task, 0, mInterval);
	}

	public void setMessage(String messge) {
		Msg = messge;
		repaint();
	}
}
